For computer systems in general and for personal computers ("PCs") in particular, it is most helpful for the computer itself to provide an indication of the specific location and nature of faults that occur therein to inform the user of an existence of a fault and to more quickly isolate and economically repair the fault. To that end, current PCs are typically equipped with some form of internal diagnostics, the purpose of which is detection and subsequent isolation of component faults within the PC architecture.
Diagnostic routines consist of a series of instructions executed by the central processing unit ("CPU") within the computer system to allow self-diagnosis. For years, computers have been provided with diagnostic routines that test and report on the operational status or functionality of components within the computer, allowing an interested party to repair or replace components that are not functioning to the desired degree.
Each diagnostic routine is designed to test a particular component of the computer system, such as a central processing unit ("CPU"), an interrupt handler, data, address and control buses, a bus controller, a main and cache memory subsystem, a video subsystem, disk drives and their controllers and so forth, until the computer system has been tested thoroughly. Typically, each diagnostic routine is designed to test each component in as isolated a fashion as possible and with minimal dependence on the correct functioning of other, perhaps faulty hardware. Each diagnostic routine places its chosen component through a relatively grueling procedure designed to elicit faults that may not be immediately apparent during normal operation of the computer system. This is because normal operation of a component may not "stress" the component to the same extent as does the diagnostic routine.
Under many circumstances, diagnostic routines perform their function normally and report to the user the fault, if any, with a particular component. However, there may be occasions on which a fault within the component or other components employed during execution of a particular diagnostic routine keeps the diagnostic routine from executing. Failure to execute may be due to one of a number of reasons. First, the CPU itself may "lock up," trapped in an endless loop or stalled, unable to execute instructions. Alternatively, a faulty component may corrupt the data, address or control buses within the computer system, flooding the buses with worthless data and preventing operation of the buses and of the computer system as a whole.
In prior art systems, if a CPU locks up during execution of a diagnostic routine, the user has to ascertain, by looking at the computer screen, listening to tones generated by a speaker coupled to the computer, listening to the whir of disk drives or through other experience that a problem has occurred and the identity of the component that caused the problem.
Unfortunately, failure of some components can fill the screen with gibberish, rendering it useless. Further, at the execution and display speed of today's PCs, the screen may scroll too quickly for the user to read the information thereon.
In an attempt to rectify the above-noted problem, some prior art computer systems provide a watchdog timer within the system to time execution of a particular diagnostic routine. In those systems, if the particular diagnostic routine being executed takes longer to execute than a certain maximum expected execution time, the watchdog timer expires and sends an interrupt to the CPU, the CPU being responsible for vectoring execution to an error-trapping routine of some sort.
Unfortunately, as noted above, some component faults prevent the CPU itself from operating. Therefore, generation of an interrupt to a nonfunctioning CPU by a conventional prior art watchdog timer does nothing to restore operation of the system. Rather, the PC remains in its non-functional state until the user manually resets or "reboots" the PC. Typically, the user does this by pressing a dedicated hardware reset button on the computer or by discontinuing and reapplying line power to the computer.
Although the user's intervention is sufficient to restore the computer's operation, the user is still left with incomplete evidence as to the cause of the computer's lock up. Thus, the user is left with the prospect of re-executing the diagnostic routines and watching their progress more carefully so as to obtain a more complete picture as to the nature of the fault, perhaps having to undergo efforts to restart the computer upon triggering of the fault again.
Accordingly, the prior art has failed to provide a means by which a locked-up computer can be restarted automatically, without user intervention. In addition, the art has yet to provide a means by which the computer itself can identify, with some particularity, the diagnostic routine executed when the computer was rendered nonfunctional.